package productorconsumidorpetri;

public class Main
{
    public static void main(String[] args)
    {
        int capacidad_buffer = 5;
        int plazas = 4;
		int transiciones = 4;
        
        //Matriz de Incidencia de la Red de Petri
            int [][] matriz = new int [plazas][transiciones];
        //Marcado inicial de la Red de Petri
            int [] marcado_inicial = new int [plazas];
        
        //Llena las matrices con el archivo. (Llamado "Incidencia.txt")
            Files archivo = new Files();
    		archivo.Read(plazas, transiciones, matriz, marcado_inicial);
    		archivo.Cerrar();
    		
    		/*
    		//Consultar la matriz y el marcado_inicial luego de cargarse. 
    		for(int i=0; i<plazas; i++)
    		{
    			for(int ii=0; ii<transiciones; ii++)
    			{
    				System.out.print(matriz[i][ii] + " ");				
    			}
    			System.out.println(" ");
    		}
    		for(int i=0; i<plazas; i++)
    		{
    			System.out.print(marcado_inicial[i]+ " ");					
    		}
    		*/

        //Crear el buffer
            Buffer buffer = new Buffer (capacidad_buffer);
            	
        //Crear el monitor
            Monitor monitor = new Monitor (matriz, marcado_inicial);
                
        //Crear hilos productores y consumidores
            Productor productor1 = new Productor (monitor, buffer);
            Productor productor2 = new Productor (monitor, buffer);
            Productor productor3 = new Productor (monitor, buffer);
            Consumidor consumidor1 = new Consumidor (monitor, buffer);
            Consumidor consumidor2 = new Consumidor (monitor, buffer);
            Consumidor consumidor3 = new Consumidor (monitor, buffer);
            Consumidor consumidor4 = new Consumidor (monitor, buffer);
            Consumidor consumidor5 = new Consumidor (monitor, buffer);
            Consumidor consumidor6 = new Consumidor (monitor, buffer);
            Consumidor consumidor7 = new Consumidor (monitor, buffer);
            Consumidor consumidor8 = new Consumidor (monitor, buffer);  
            Consumidor consumidor9 = new Consumidor (monitor, buffer);
            Consumidor consumidor10 = new Consumidor (monitor, buffer);
            
        //Inicio a los hilos
            productor1.start();
            productor2.start();
            productor3.start();
            consumidor1.start();
            consumidor2.start();            
            consumidor3.start();
            consumidor4.start();
            consumidor5.start();
            consumidor6.start();
            /*
            consumidor7.start();
            consumidor8.start();
            consumidor9.start();
            consumidor10.start();
            */

    		
    } //Fin del main
   
}